Skip to content

feat: rebrand to Angular Agent Framework — agent() + @cacheplane/angular#39

Merged
blove merged 28 commits into
mainfrom
claude/zealous-jones
Apr 7, 2026
Merged

feat: rebrand to Angular Agent Framework — agent() + @cacheplane/angular#39
blove merged 28 commits into
mainfrom
claude/zealous-jones

Conversation

@blove
Copy link
Copy Markdown
Contributor

@blove blove commented Apr 7, 2026

Summary

Complete rebrand from "Angular Stream Resource" to "Angular Agent Framework":

  • API: streamResource()agent(), StreamResource<T>Agent<T>
  • Package: @cacheplane/stream-resource@cacheplane/angular
  • Provider: provideStreamResource()provideAgent()
  • Testing: MockStreamTransportMockAgentTransport
  • Brand: "Angular Stream Resource" → "Angular Agent Framework" across all website copy, docs, and marketing

278 files changed — bulk sed replacements with manual fixes for domain/repo URLs.

Preserved

  • stream-resource.dev domain (unchanged)
  • github.com/cacheplane/stream-resource repo URL (unchanged)
  • The word "streaming" (unaffected)

Test plan

  • nx build angular passes
  • No remaining references to streamResource, StreamResource, or @cacheplane/stream-resource in source
  • stream-resource.dev domain references preserved
  • GitHub repo URLs preserved
  • Website renders with new branding

🤖 Generated with Claude Code

blove and others added 28 commits April 6, 2026 11:20
…a11y (#27)

* docs(chat): add ship-readiness polish implementation plan

Addresses all 19 audit issues: theme consolidation, Tailwind conversion,
auto-scroll, textarea auto-expand, markdown rendering, empty state,
responsive sidebar, SVG icons, ARIA, and API cleanup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(chat): consolidate theme into shared TS module, add icons + markdown utils

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(chat): convert ChatComponent to Tailwind, add auto-scroll + empty state + responsive sidebar

- Replace 80+ lines of inlined CSS vars with CHAT_THEME_STYLES import
- Add CHAT_MARKDOWN_STYLES + renderMarkdown for AI message rendering
- Convert all inline style="" attributes to Tailwind utility classes
- Add auto-scroll via viewChild + effect tracking message count
- Add empty state when no messages and not loading
- Make thread sidebar responsive with hidden md:flex + mobile toggle
- Add ARIA attributes: role=log, aria-live=polite, role=navigation
- Use ViewEncapsulation.None for markdown styles

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(chat): convert primitives to Tailwind, add textarea auto-expand + focused signal

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(chat): convert ChatDebug + sub-components to theme-aware Tailwind

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(chat): convert remaining compositions to Tailwind with SVG icons + theme vars

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(chat): clean up public API, add marked peer dep, verify build

Remove legacy cp-chat/cp-chat-input/cp-chat-message components and
migrate all cockpit examples to the new ChatComponent composition.
Export shared styles, icons, and markdown utilities from public API.
Update ChatConfig with renderRegistry, avatarLabel, assistantName.
Add marked as optional peer dep and fix dynamic import for library
build. Add @source directive to cockpit styles for Tailwind scanning.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs: add rebrand design spec for Angular Stream Resource

* docs: add implementation plan for Angular Stream Resource rebrand

* docs: rebrand StreamResource → Angular Stream Resource in README and COMMERCIAL

Update product name in prose/marketing contexts: README alt text and
license section, COMMERCIAL.md license header.

* docs: rebrand StreamResource → Angular Stream Resource in website shared components

Update product name in layout metadata title, Nav logo link text,
Footer brand name, and Footer copyright line.

* docs: rebrand StreamResource → Angular Stream Resource in landing and llms.txt

Update product name in ProblemSection badge text, GenerativeUIFrame
aria-label, and llms.txt route title and description line.

* docs: rebrand StreamResource → Angular Stream Resource in documentation files

Update product name in headings and prose across limitations.md and
four design specs (titles, overview sentences, section headings).

* docs: rebrand stream-resource → Angular Stream Resource in LLM context files

Update product name in the H1 title of AGENTS.md and CLAUDE.md.

* docs: rebrand remaining spec and plan references to Angular Stream Resource

* docs: fix remaining brand references missed in initial pass
…d integration (#29)

* fix(website): add track shake animation to ProblemSection stall phase

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(website): ProblemSection quality fixes — timer cleanup, unique SVG ID, aria-hidden, correct import

- Store setTimeout IDs and clear them on unmount (prevents state updates on unmounted component)
- Use useId() to generate unique hatchId per instance (prevents SVG pattern id collision)
- Add role=progressbar + aria-valuenow to track container for screen readers
- Add aria-hidden=true to decorative animated elements (pins, labels, badge, counter)
- Fix import: use local lib/design-tokens instead of unresolved @cacheplane/design-tokens
- Add invariant comment for done-timeout vs counter-duration coupling

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add FullStackSection with animated stack diagram and roadmap strip

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add ChatFeaturesSection with 4 interactive chat scenarios

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add FairComparisonSection comparison table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: wire ProblemSection, FullStackSection, ChatFeaturesSection, FairComparisonSection into landing page

- Insert ProblemSection + FullStackSection + ChatFeaturesSection after StatsStrip
- Insert FairComparisonSection after DeepAgentsShowcase
- Add two ambient gradient blobs for extended page height
- Task 5 (FeatureStrip copy): no-op — the problematic 'no established pattern' copy was not present in this branch

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: add puppeteer devDependency and generate-whitepaper script

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add whitepaper signup API route with NDJSON persistence

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add whitepaper generation script

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add WhitePaperSection with free download and optional lead-gen form

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add WhitePaperSection to landing page; remove useStream parity copy from FeatureStrip

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(whitepaper): add JetBrains Mono to Google Fonts URL and regenerate preview

Fixes missing code font in whitepaper output. Regenerates whitepaper-preview.html
with correct 'EB Garamond' and 'JetBrains Mono' font references throughout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add PilotHero component and /pilot-to-prod page skeleton

* fix: PilotHero responsive padding, eyebrow style conflict, page metadata

* feat: add WhatIsIncluded 3-column component for pilot-to-prod page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add HowItWorks 3-phase timeline for pilot-to-prod page

* feat: add PricingSignal pricing callout for pilot-to-prod page

* feat: add WhitePaperGate 5-field lead gen form for pilot-to-prod page

* fix: change role=alert to role=status to match aria-live=polite in WhitePaperGate

* feat: add PilotFooterCTA and wire complete pilot-to-prod page

* fix: use tokens.colors.accent in PilotFooterCTA, add aria-hidden to page blobs

* feat: add Pilot to Prod nav link and restructure homepage (remove FeatureStrip/CockpitCTA/CodeBlock, add PilotProgram CTA)

* fix: correct design-tokens import path in pilot-to-prod page (3 levels up)

* fix: apply full review findings — messaging, mobile, UX, and RiskRemoval section

- Remove useStream() parity messaging from HeroTwoCol, WhatIsIncluded, StatsStrip
- Fix PricingSignal: remove ambiguous '/year', clarify as fixed fee + pilot included
- Add PricingSignal mobile padding reduction via media query
- Fix ProblemSection stat grid to collapse on mobile (auto-fit minmax)
- Add RiskRemoval section to pilot-to-prod page (between PricingSignal and WhitePaperGate)
- Fix Nav Examples link: external=true, target=_blank, rel=noopener noreferrer
- Fix WhitePaperGate: role field sent in message body, not merged into company string
- Fix PilotFooterCTA: replace broken whileHover borderColor with CSS class hover
- Fix PilotHero: remove opacity from initial animations (prevents blank hero flash)
- Increase PilotHero CTA padding to meet 44px touch target

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: remove remaining useStream parity messaging from layout, Footer, and ValueProps

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: second review pass — docs messaging, title, broken link, a11y labels

- introduction.mdx: remove parity/useStream opening line, use Signal-native positioning
- AGENTS.md.template + CLAUDE.md.template: update tagline to Signal-native
- layout.tsx: update <title> from LangChain to LangGraph
- Footer.tsx: fix /api-reference → /docs/api/stream-resource (was 404)
- PilotHero.tsx: add aria-hidden to decorative gradient blobs
- WhitePaperSection.tsx: add sr-only labels + aria-label to name/email inputs
- LeadForm.tsx (pricing): add sr-only labels + aria-label to all four form inputs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add whitepaper.pdf to public directory

Generated from whitepaper-preview.html via Puppeteer. All 6 chapters
present (Streaming State Management, Thread Persistence, Tool-Call
Rendering, Human Approval Flows, Generative UI, Deterministic Testing).
Fixes dead 'Download the Guide' CTAs on pilot-to-prod and homepage.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: citation badges on stats, pricing reframe to app deployment license

Citation badges:
- New CitationBadge component — click-to-open popover with source, stat, note, and link
- 66% stat → Stack Overflow Developer Survey 2025
- 31% stat → ISG AI Adoption Reports
- 75% stat → Stack Overflow Developer Survey 2025
- Keyboard (Escape) and outside-click dismissal, ARIA dialog role

Pricing reframe (app deployment license):
- Remove ALL refund/money-back/guarantee language site-wide
- PilotHero: trust line → "App deployment license · $20,000 · 3-month co-pilot engagement"
- PilotHero: subheadline removes "guaranteed outcome"
- WhatIsIncluded: card 3 renamed from "Production Guarantee" → "App Deployment License"
- HowItWorks: phase 3 removes "full refund" language, deliverable → "Production deployment"
- PricingSignal: subtitle + features list updated to license/co-pilot framing
- RiskRemoval: section reframed from guarantee → "What's included in the license"
  Replaces money-back card with "We work alongside your team" card
- PilotFooterCTA: fine print updated
- pilot-to-prod/page.tsx: meta description updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: subtler citation badge + citations on all 77% claims

CitationBadge:
- Reduced to 13px, transparent background, faint border (rgba 0.2)
- Text color rgba(0,64,144,0.35) at rest — nearly invisible until hovered
- No fill on idle state, border-only approach

New citation placements:
- PilotHero subheadline: 77% → McKinsey State of AI 2024
- PilotFooterCTA body copy: 77% → McKinsey State of AI 2024
- HomePilotCTA (new component): extracts inline pilot CTA from page.tsx
  so it can be a client component with CitationBadge on the 77% claim
- page.tsx: replaces inline section with <HomePilotCTA />

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: add FullStackSection redesign spec (EM/CTO layer narrative + Gen UI bug fix)

* feat(website): redesign FullStackSection for EM/CTO audience

* docs: apply Angular Stream Resource rebrand to narrative components

* chore: sync package-lock.json after merge

* fix(website): update e2e test for new landing page structure

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
… Overflow citations

- Replace fabricated 77% McKinsey stat with Gartner "50% of GenAI projects
  abandoned after POC" (Jan 2026) across ProblemSection, PilotHero,
  HomePilotCTA, and PilotFooterCTA
- Replace stale ISG 31% stat with same Gartner citation in ProblemSection
- Update progress bar animation to stall at 50% instead of 77%
- Update FairComparisonSection to reference @langchain/langgraph-sdk
  explicitly in column header and subtitle
- All three stat cards now cite verified sources: Stack Overflow 2025
  Developer Survey (66%, 75%) and Gartner GenAI Project Failure 2026 (50%)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Spec 1: Mobile responsive fixes (ChatFeaturesSection overflow,
  FairComparisonSection mobile layout, touch targets, min font sizes)
  plus design improvements (social proof, footer newsletter, white paper
  soft gate, OG meta tags)
- Spec 2: Resend integration for lead gen (email notifications on lead
  forms, white paper PDF delivery via email, newsletter signup with
  Resend audience, React Email templates)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Plan 1: Lead generation with Resend (9 tasks) — install deps,
  shared module, 3 email templates, 3 API route upgrades, e2e verify
- Plan 2: Website audit mobile + design (9 tasks) — ChatFeatures
  responsive, FairComparison mobile cards, touch targets, min font
  sizes, social proof, footer newsletter, white paper soft gate, OG tags

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ce crash

Replace @react-email/components JSX templates with plain TypeScript string
functions and switch Resend calls from react: to html:, eliminating the
duplicate React instance that caused useInsertionEffect to crash in API routes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Resend client is now created lazily on first use, not at module load
- When RESEND_API_KEY is missing, all email operations no-op with a log
- Forms still return { ok: true } and write NDJSON backup without keys
- Extracted sendEmail() helper that encapsulates the null-client check

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…t fixes)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Rename streamResource() → agent(), StreamResource → Agent
- Rename @cacheplane/stream-resource → @cacheplane/angular
- Rebrand 'Angular Stream Resource' → 'Angular Agent Framework'
- Rename libs/stream-resource → libs/angular, e2e/stream-resource-e2e → e2e/angular-e2e
- Update all imports, types, providers, docs, and configs
- Preserve stream-resource.dev domain and GitHub repo URLs
- Preserve STREAM_RESOURCE_CONFIG injection token name

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@blove blove merged commit 4469f4e into main Apr 7, 2026
10 of 11 checks passed
blove added a commit that referenced this pull request Apr 7, 2026
…lar (#39)

* feat(chat): ship-readiness polish — Tailwind, auto-scroll, markdown, a11y (#27)

* docs(chat): add ship-readiness polish implementation plan

Addresses all 19 audit issues: theme consolidation, Tailwind conversion,
auto-scroll, textarea auto-expand, markdown rendering, empty state,
responsive sidebar, SVG icons, ARIA, and API cleanup.


* feat(chat): consolidate theme into shared TS module, add icons + markdown utils


* feat(chat): convert ChatComponent to Tailwind, add auto-scroll + empty state + responsive sidebar

- Replace 80+ lines of inlined CSS vars with CHAT_THEME_STYLES import
- Add CHAT_MARKDOWN_STYLES + renderMarkdown for AI message rendering
- Convert all inline style="" attributes to Tailwind utility classes
- Add auto-scroll via viewChild + effect tracking message count
- Add empty state when no messages and not loading
- Make thread sidebar responsive with hidden md:flex + mobile toggle
- Add ARIA attributes: role=log, aria-live=polite, role=navigation
- Use ViewEncapsulation.None for markdown styles


* feat(chat): convert primitives to Tailwind, add textarea auto-expand + focused signal


* feat(chat): convert ChatDebug + sub-components to theme-aware Tailwind


* feat(chat): convert remaining compositions to Tailwind with SVG icons + theme vars


* feat(chat): clean up public API, add marked peer dep, verify build

Remove legacy cp-chat/cp-chat-input/cp-chat-message components and
migrate all cockpit examples to the new ChatComponent composition.
Export shared styles, icons, and markdown utilities from public API.
Update ChatConfig with renderRegistry, avatarLabel, assistantName.
Add marked as optional peer dep and fix dynamic import for library
build. Add @source directive to cockpit styles for Tailwind scanning.


---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Rebrand to Angular Stream Resource (#28)

* docs: add rebrand design spec for Angular Stream Resource

* docs: add implementation plan for Angular Stream Resource rebrand

* docs: rebrand StreamResource → Angular Stream Resource in README and COMMERCIAL

Update product name in prose/marketing contexts: README alt text and
license section, COMMERCIAL.md license header.

* docs: rebrand StreamResource → Angular Stream Resource in website shared components

Update product name in layout metadata title, Nav logo link text,
Footer brand name, and Footer copyright line.

* docs: rebrand StreamResource → Angular Stream Resource in landing and llms.txt

Update product name in ProblemSection badge text, GenerativeUIFrame
aria-label, and llms.txt route title and description line.

* docs: rebrand StreamResource → Angular Stream Resource in documentation files

Update product name in headings and prose across limitations.md and
four design specs (titles, overview sentences, section headings).

* docs: rebrand stream-resource → Angular Stream Resource in LLM context files

Update product name in the H1 title of AGENTS.md and CLAUDE.md.

* docs: rebrand remaining spec and plan references to Angular Stream Resource

* docs: fix remaining brand references missed in initial pass

* feat(website): add narrative sections, pilot-to-prod page, and rebrand integration (#29)

* fix(website): add track shake animation to ProblemSection stall phase


* fix(website): ProblemSection quality fixes — timer cleanup, unique SVG ID, aria-hidden, correct import

- Store setTimeout IDs and clear them on unmount (prevents state updates on unmounted component)
- Use useId() to generate unique hatchId per instance (prevents SVG pattern id collision)
- Add role=progressbar + aria-valuenow to track container for screen readers
- Add aria-hidden=true to decorative animated elements (pins, labels, badge, counter)
- Fix import: use local lib/design-tokens instead of unresolved @cacheplane/design-tokens
- Add invariant comment for done-timeout vs counter-duration coupling


* feat: add FullStackSection with animated stack diagram and roadmap strip


* feat: add ChatFeaturesSection with 4 interactive chat scenarios


* feat: add FairComparisonSection comparison table


* feat: wire ProblemSection, FullStackSection, ChatFeaturesSection, FairComparisonSection into landing page

- Insert ProblemSection + FullStackSection + ChatFeaturesSection after StatsStrip
- Insert FairComparisonSection after DeepAgentsShowcase
- Add two ambient gradient blobs for extended page height
- Task 5 (FeatureStrip copy): no-op — the problematic 'no established pattern' copy was not present in this branch


* chore: add puppeteer devDependency and generate-whitepaper script


* feat: add whitepaper signup API route with NDJSON persistence


* feat: add whitepaper generation script


* feat: add WhitePaperSection with free download and optional lead-gen form


* feat: add WhitePaperSection to landing page; remove useStream parity copy from FeatureStrip


* fix(whitepaper): add JetBrains Mono to Google Fonts URL and regenerate preview

Fixes missing code font in whitepaper output. Regenerates whitepaper-preview.html
with correct 'EB Garamond' and 'JetBrains Mono' font references throughout.


* feat: add PilotHero component and /pilot-to-prod page skeleton

* fix: PilotHero responsive padding, eyebrow style conflict, page metadata

* feat: add WhatIsIncluded 3-column component for pilot-to-prod page


* feat: add HowItWorks 3-phase timeline for pilot-to-prod page

* feat: add PricingSignal pricing callout for pilot-to-prod page

* feat: add WhitePaperGate 5-field lead gen form for pilot-to-prod page

* fix: change role=alert to role=status to match aria-live=polite in WhitePaperGate

* feat: add PilotFooterCTA and wire complete pilot-to-prod page

* fix: use tokens.colors.accent in PilotFooterCTA, add aria-hidden to page blobs

* feat: add Pilot to Prod nav link and restructure homepage (remove FeatureStrip/CockpitCTA/CodeBlock, add PilotProgram CTA)

* fix: correct design-tokens import path in pilot-to-prod page (3 levels up)

* fix: apply full review findings — messaging, mobile, UX, and RiskRemoval section

- Remove useStream() parity messaging from HeroTwoCol, WhatIsIncluded, StatsStrip
- Fix PricingSignal: remove ambiguous '/year', clarify as fixed fee + pilot included
- Add PricingSignal mobile padding reduction via media query
- Fix ProblemSection stat grid to collapse on mobile (auto-fit minmax)
- Add RiskRemoval section to pilot-to-prod page (between PricingSignal and WhitePaperGate)
- Fix Nav Examples link: external=true, target=_blank, rel=noopener noreferrer
- Fix WhitePaperGate: role field sent in message body, not merged into company string
- Fix PilotFooterCTA: replace broken whileHover borderColor with CSS class hover
- Fix PilotHero: remove opacity from initial animations (prevents blank hero flash)
- Increase PilotHero CTA padding to meet 44px touch target


* fix: remove remaining useStream parity messaging from layout, Footer, and ValueProps


* fix: second review pass — docs messaging, title, broken link, a11y labels

- introduction.mdx: remove parity/useStream opening line, use Signal-native positioning
- AGENTS.md.template + CLAUDE.md.template: update tagline to Signal-native
- layout.tsx: update <title> from LangChain to LangGraph
- Footer.tsx: fix /api-reference → /docs/api/stream-resource (was 404)
- PilotHero.tsx: add aria-hidden to decorative gradient blobs
- WhitePaperSection.tsx: add sr-only labels + aria-label to name/email inputs
- LeadForm.tsx (pricing): add sr-only labels + aria-label to all four form inputs


* feat: add whitepaper.pdf to public directory

Generated from whitepaper-preview.html via Puppeteer. All 6 chapters
present (Streaming State Management, Thread Persistence, Tool-Call
Rendering, Human Approval Flows, Generative UI, Deterministic Testing).
Fixes dead 'Download the Guide' CTAs on pilot-to-prod and homepage.


* feat: citation badges on stats, pricing reframe to app deployment license

Citation badges:
- New CitationBadge component — click-to-open popover with source, stat, note, and link
- 66% stat → Stack Overflow Developer Survey 2025
- 31% stat → ISG AI Adoption Reports
- 75% stat → Stack Overflow Developer Survey 2025
- Keyboard (Escape) and outside-click dismissal, ARIA dialog role

Pricing reframe (app deployment license):
- Remove ALL refund/money-back/guarantee language site-wide
- PilotHero: trust line → "App deployment license · $20,000 · 3-month co-pilot engagement"
- PilotHero: subheadline removes "guaranteed outcome"
- WhatIsIncluded: card 3 renamed from "Production Guarantee" → "App Deployment License"
- HowItWorks: phase 3 removes "full refund" language, deliverable → "Production deployment"
- PricingSignal: subtitle + features list updated to license/co-pilot framing
- RiskRemoval: section reframed from guarantee → "What's included in the license"
  Replaces money-back card with "We work alongside your team" card
- PilotFooterCTA: fine print updated
- pilot-to-prod/page.tsx: meta description updated


* feat: subtler citation badge + citations on all 77% claims

CitationBadge:
- Reduced to 13px, transparent background, faint border (rgba 0.2)
- Text color rgba(0,64,144,0.35) at rest — nearly invisible until hovered
- No fill on idle state, border-only approach

New citation placements:
- PilotHero subheadline: 77% → McKinsey State of AI 2024
- PilotFooterCTA body copy: 77% → McKinsey State of AI 2024
- HomePilotCTA (new component): extracts inline pilot CTA from page.tsx
  so it can be a client component with CitationBadge on the 77% claim
- page.tsx: replaces inline section with <HomePilotCTA />


* docs: add FullStackSection redesign spec (EM/CTO layer narrative + Gen UI bug fix)

* feat(website): redesign FullStackSection for EM/CTO audience

* docs: apply Angular Stream Resource rebrand to narrative components

* chore: sync package-lock.json after merge

* fix(website): update e2e test for new landing page structure

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(website): replace unsourced stats with verified Gartner and Stack Overflow citations

- Replace fabricated 77% McKinsey stat with Gartner "50% of GenAI projects
  abandoned after POC" (Jan 2026) across ProblemSection, PilotHero,
  HomePilotCTA, and PilotFooterCTA
- Replace stale ISG 31% stat with same Gartner citation in ProblemSection
- Update progress bar animation to stall at 50% instead of 77%
- Update FairComparisonSection to reference @langchain/langgraph-sdk
  explicitly in column header and subtitle
- All three stat cards now cite verified sources: Stack Overflow 2025
  Developer Survey (66%, 75%) and Gartner GenAI Project Failure 2026 (50%)


* docs: add website audit and lead generation specs

- Spec 1: Mobile responsive fixes (ChatFeaturesSection overflow,
  FairComparisonSection mobile layout, touch targets, min font sizes)
  plus design improvements (social proof, footer newsletter, white paper
  soft gate, OG meta tags)
- Spec 2: Resend integration for lead gen (email notifications on lead
  forms, white paper PDF delivery via email, newsletter signup with
  Resend audience, React Email templates)


* docs: add implementation plans for lead gen and website audit

- Plan 1: Lead generation with Resend (9 tasks) — install deps,
  shared module, 3 email templates, 3 API route upgrades, e2e verify
- Plan 2: Website audit mobile + design (9 tasks) — ChatFeatures
  responsive, FairComparison mobile cards, touch targets, min font
  sizes, social proof, footer newsletter, white paper soft gate, OG tags


* chore: install resend and react-email dependencies


* feat: add shared resend module with audience helper

* feat: add lead notification email template

* feat: add whitepaper download email template

* feat: add newsletter welcome email template

* feat: wire /api/leads to Resend email + audience

* feat: wire /api/whitepaper-signup to Resend email delivery

* feat: add /api/newsletter route with Resend welcome email

* fix: convert email templates to plain HTML to avoid React dual-instance crash

Replace @react-email/components JSX templates with plain TypeScript string
functions and switch Resend calls from react: to html:, eliminating the
duplicate React instance that caused useInsertionEffect to crash in API routes.


* fix: lazy-init Resend client to gracefully handle missing API key

- Resend client is now created lazily on first use, not at module load
- When RESEND_API_KEY is missing, all email operations no-op with a log
- Forms still return { ok: true } and write NDJSON backup without keys
- Extracted sendEmail() helper that encapsulates the null-client check


* fix: make ChatFeaturesSection responsive on mobile

* fix: stack FairComparisonSection rows vertically on mobile


* fix: increase touch targets to meet WCAG 44px minimum

* fix: enforce 12px minimum font size on progress bar labels

* feat: add social proof badge strip below stats

* feat: add newsletter signup form to footer

* feat: restructure white paper section with soft gate

* feat: add OpenGraph and Twitter Card meta tags

* feat: rebrand from streamResource to agent() — @cacheplane/angular

- Rename streamResource() → agent(), StreamResource → Agent
- Rename @cacheplane/stream-resource → @cacheplane/angular
- Rebrand 'Angular Stream Resource' → 'Angular Agent Framework'
- Rename libs/stream-resource → libs/angular, e2e/stream-resource-e2e → e2e/angular-e2e
- Update all imports, types, providers, docs, and configs
- Preserve stream-resource.dev domain and GitHub repo URLs
- Preserve STREAM_RESOURCE_CONFIG injection token name


---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
blove added a commit that referenced this pull request Apr 7, 2026
…lar (#39)

* feat(chat): ship-readiness polish — Tailwind, auto-scroll, markdown, a11y (#27)

* docs(chat): add ship-readiness polish implementation plan

Addresses all 19 audit issues: theme consolidation, Tailwind conversion,
auto-scroll, textarea auto-expand, markdown rendering, empty state,
responsive sidebar, SVG icons, ARIA, and API cleanup.


* feat(chat): consolidate theme into shared TS module, add icons + markdown utils


* feat(chat): convert ChatComponent to Tailwind, add auto-scroll + empty state + responsive sidebar

- Replace 80+ lines of inlined CSS vars with CHAT_THEME_STYLES import
- Add CHAT_MARKDOWN_STYLES + renderMarkdown for AI message rendering
- Convert all inline style="" attributes to Tailwind utility classes
- Add auto-scroll via viewChild + effect tracking message count
- Add empty state when no messages and not loading
- Make thread sidebar responsive with hidden md:flex + mobile toggle
- Add ARIA attributes: role=log, aria-live=polite, role=navigation
- Use ViewEncapsulation.None for markdown styles


* feat(chat): convert primitives to Tailwind, add textarea auto-expand + focused signal


* feat(chat): convert ChatDebug + sub-components to theme-aware Tailwind


* feat(chat): convert remaining compositions to Tailwind with SVG icons + theme vars


* feat(chat): clean up public API, add marked peer dep, verify build

Remove legacy cp-chat/cp-chat-input/cp-chat-message components and
migrate all cockpit examples to the new ChatComponent composition.
Export shared styles, icons, and markdown utilities from public API.
Update ChatConfig with renderRegistry, avatarLabel, assistantName.
Add marked as optional peer dep and fix dynamic import for library
build. Add @source directive to cockpit styles for Tailwind scanning.


---------


* Rebrand to Angular Stream Resource (#28)

* docs: add rebrand design spec for Angular Stream Resource

* docs: add implementation plan for Angular Stream Resource rebrand

* docs: rebrand StreamResource → Angular Stream Resource in README and COMMERCIAL

Update product name in prose/marketing contexts: README alt text and
license section, COMMERCIAL.md license header.

* docs: rebrand StreamResource → Angular Stream Resource in website shared components

Update product name in layout metadata title, Nav logo link text,
Footer brand name, and Footer copyright line.

* docs: rebrand StreamResource → Angular Stream Resource in landing and llms.txt

Update product name in ProblemSection badge text, GenerativeUIFrame
aria-label, and llms.txt route title and description line.

* docs: rebrand StreamResource → Angular Stream Resource in documentation files

Update product name in headings and prose across limitations.md and
four design specs (titles, overview sentences, section headings).

* docs: rebrand stream-resource → Angular Stream Resource in LLM context files

Update product name in the H1 title of AGENTS.md and CLAUDE.md.

* docs: rebrand remaining spec and plan references to Angular Stream Resource

* docs: fix remaining brand references missed in initial pass

* feat(website): add narrative sections, pilot-to-prod page, and rebrand integration (#29)

* fix(website): add track shake animation to ProblemSection stall phase


* fix(website): ProblemSection quality fixes — timer cleanup, unique SVG ID, aria-hidden, correct import

- Store setTimeout IDs and clear them on unmount (prevents state updates on unmounted component)
- Use useId() to generate unique hatchId per instance (prevents SVG pattern id collision)
- Add role=progressbar + aria-valuenow to track container for screen readers
- Add aria-hidden=true to decorative animated elements (pins, labels, badge, counter)
- Fix import: use local lib/design-tokens instead of unresolved @cacheplane/design-tokens
- Add invariant comment for done-timeout vs counter-duration coupling


* feat: add FullStackSection with animated stack diagram and roadmap strip


* feat: add ChatFeaturesSection with 4 interactive chat scenarios


* feat: add FairComparisonSection comparison table


* feat: wire ProblemSection, FullStackSection, ChatFeaturesSection, FairComparisonSection into landing page

- Insert ProblemSection + FullStackSection + ChatFeaturesSection after StatsStrip
- Insert FairComparisonSection after DeepAgentsShowcase
- Add two ambient gradient blobs for extended page height
- Task 5 (FeatureStrip copy): no-op — the problematic 'no established pattern' copy was not present in this branch


* chore: add puppeteer devDependency and generate-whitepaper script


* feat: add whitepaper signup API route with NDJSON persistence


* feat: add whitepaper generation script


* feat: add WhitePaperSection with free download and optional lead-gen form


* feat: add WhitePaperSection to landing page; remove useStream parity copy from FeatureStrip


* fix(whitepaper): add JetBrains Mono to Google Fonts URL and regenerate preview

Fixes missing code font in whitepaper output. Regenerates whitepaper-preview.html
with correct 'EB Garamond' and 'JetBrains Mono' font references throughout.


* feat: add PilotHero component and /pilot-to-prod page skeleton

* fix: PilotHero responsive padding, eyebrow style conflict, page metadata

* feat: add WhatIsIncluded 3-column component for pilot-to-prod page


* feat: add HowItWorks 3-phase timeline for pilot-to-prod page

* feat: add PricingSignal pricing callout for pilot-to-prod page

* feat: add WhitePaperGate 5-field lead gen form for pilot-to-prod page

* fix: change role=alert to role=status to match aria-live=polite in WhitePaperGate

* feat: add PilotFooterCTA and wire complete pilot-to-prod page

* fix: use tokens.colors.accent in PilotFooterCTA, add aria-hidden to page blobs

* feat: add Pilot to Prod nav link and restructure homepage (remove FeatureStrip/CockpitCTA/CodeBlock, add PilotProgram CTA)

* fix: correct design-tokens import path in pilot-to-prod page (3 levels up)

* fix: apply full review findings — messaging, mobile, UX, and RiskRemoval section

- Remove useStream() parity messaging from HeroTwoCol, WhatIsIncluded, StatsStrip
- Fix PricingSignal: remove ambiguous '/year', clarify as fixed fee + pilot included
- Add PricingSignal mobile padding reduction via media query
- Fix ProblemSection stat grid to collapse on mobile (auto-fit minmax)
- Add RiskRemoval section to pilot-to-prod page (between PricingSignal and WhitePaperGate)
- Fix Nav Examples link: external=true, target=_blank, rel=noopener noreferrer
- Fix WhitePaperGate: role field sent in message body, not merged into company string
- Fix PilotFooterCTA: replace broken whileHover borderColor with CSS class hover
- Fix PilotHero: remove opacity from initial animations (prevents blank hero flash)
- Increase PilotHero CTA padding to meet 44px touch target


* fix: remove remaining useStream parity messaging from layout, Footer, and ValueProps


* fix: second review pass — docs messaging, title, broken link, a11y labels

- introduction.mdx: remove parity/useStream opening line, use Signal-native positioning
- AGENTS.md.template + CLAUDE.md.template: update tagline to Signal-native
- layout.tsx: update <title> from LangChain to LangGraph
- Footer.tsx: fix /api-reference → /docs/api/stream-resource (was 404)
- PilotHero.tsx: add aria-hidden to decorative gradient blobs
- WhitePaperSection.tsx: add sr-only labels + aria-label to name/email inputs
- LeadForm.tsx (pricing): add sr-only labels + aria-label to all four form inputs


* feat: add whitepaper.pdf to public directory

Generated from whitepaper-preview.html via Puppeteer. All 6 chapters
present (Streaming State Management, Thread Persistence, Tool-Call
Rendering, Human Approval Flows, Generative UI, Deterministic Testing).
Fixes dead 'Download the Guide' CTAs on pilot-to-prod and homepage.


* feat: citation badges on stats, pricing reframe to app deployment license

Citation badges:
- New CitationBadge component — click-to-open popover with source, stat, note, and link
- 66% stat → Stack Overflow Developer Survey 2025
- 31% stat → ISG AI Adoption Reports
- 75% stat → Stack Overflow Developer Survey 2025
- Keyboard (Escape) and outside-click dismissal, ARIA dialog role

Pricing reframe (app deployment license):
- Remove ALL refund/money-back/guarantee language site-wide
- PilotHero: trust line → "App deployment license · $20,000 · 3-month co-pilot engagement"
- PilotHero: subheadline removes "guaranteed outcome"
- WhatIsIncluded: card 3 renamed from "Production Guarantee" → "App Deployment License"
- HowItWorks: phase 3 removes "full refund" language, deliverable → "Production deployment"
- PricingSignal: subtitle + features list updated to license/co-pilot framing
- RiskRemoval: section reframed from guarantee → "What's included in the license"
  Replaces money-back card with "We work alongside your team" card
- PilotFooterCTA: fine print updated
- pilot-to-prod/page.tsx: meta description updated


* feat: subtler citation badge + citations on all 77% claims

CitationBadge:
- Reduced to 13px, transparent background, faint border (rgba 0.2)
- Text color rgba(0,64,144,0.35) at rest — nearly invisible until hovered
- No fill on idle state, border-only approach

New citation placements:
- PilotHero subheadline: 77% → McKinsey State of AI 2024
- PilotFooterCTA body copy: 77% → McKinsey State of AI 2024
- HomePilotCTA (new component): extracts inline pilot CTA from page.tsx
  so it can be a client component with CitationBadge on the 77% claim
- page.tsx: replaces inline section with <HomePilotCTA />


* docs: add FullStackSection redesign spec (EM/CTO layer narrative + Gen UI bug fix)

* feat(website): redesign FullStackSection for EM/CTO audience

* docs: apply Angular Stream Resource rebrand to narrative components

* chore: sync package-lock.json after merge

* fix(website): update e2e test for new landing page structure

---------


* fix(website): replace unsourced stats with verified Gartner and Stack Overflow citations

- Replace fabricated 77% McKinsey stat with Gartner "50% of GenAI projects
  abandoned after POC" (Jan 2026) across ProblemSection, PilotHero,
  HomePilotCTA, and PilotFooterCTA
- Replace stale ISG 31% stat with same Gartner citation in ProblemSection
- Update progress bar animation to stall at 50% instead of 77%
- Update FairComparisonSection to reference @langchain/langgraph-sdk
  explicitly in column header and subtitle
- All three stat cards now cite verified sources: Stack Overflow 2025
  Developer Survey (66%, 75%) and Gartner GenAI Project Failure 2026 (50%)


* docs: add website audit and lead generation specs

- Spec 1: Mobile responsive fixes (ChatFeaturesSection overflow,
  FairComparisonSection mobile layout, touch targets, min font sizes)
  plus design improvements (social proof, footer newsletter, white paper
  soft gate, OG meta tags)
- Spec 2: Resend integration for lead gen (email notifications on lead
  forms, white paper PDF delivery via email, newsletter signup with
  Resend audience, React Email templates)


* docs: add implementation plans for lead gen and website audit

- Plan 1: Lead generation with Resend (9 tasks) — install deps,
  shared module, 3 email templates, 3 API route upgrades, e2e verify
- Plan 2: Website audit mobile + design (9 tasks) — ChatFeatures
  responsive, FairComparison mobile cards, touch targets, min font
  sizes, social proof, footer newsletter, white paper soft gate, OG tags


* chore: install resend and react-email dependencies


* feat: add shared resend module with audience helper

* feat: add lead notification email template

* feat: add whitepaper download email template

* feat: add newsletter welcome email template

* feat: wire /api/leads to Resend email + audience

* feat: wire /api/whitepaper-signup to Resend email delivery

* feat: add /api/newsletter route with Resend welcome email

* fix: convert email templates to plain HTML to avoid React dual-instance crash

Replace @react-email/components JSX templates with plain TypeScript string
functions and switch Resend calls from react: to html:, eliminating the
duplicate React instance that caused useInsertionEffect to crash in API routes.


* fix: lazy-init Resend client to gracefully handle missing API key

- Resend client is now created lazily on first use, not at module load
- When RESEND_API_KEY is missing, all email operations no-op with a log
- Forms still return { ok: true } and write NDJSON backup without keys
- Extracted sendEmail() helper that encapsulates the null-client check


* fix: make ChatFeaturesSection responsive on mobile

* fix: stack FairComparisonSection rows vertically on mobile


* fix: increase touch targets to meet WCAG 44px minimum

* fix: enforce 12px minimum font size on progress bar labels

* feat: add social proof badge strip below stats

* feat: add newsletter signup form to footer

* feat: restructure white paper section with soft gate

* feat: add OpenGraph and Twitter Card meta tags

* feat: rebrand from streamResource to agent() — @cacheplane/angular

- Rename streamResource() → agent(), StreamResource → Agent
- Rename @cacheplane/stream-resource → @cacheplane/angular
- Rebrand 'Angular Stream Resource' → 'Angular Agent Framework'
- Rename libs/stream-resource → libs/angular, e2e/stream-resource-e2e → e2e/angular-e2e
- Update all imports, types, providers, docs, and configs
- Preserve stream-resource.dev domain and GitHub repo URLs
- Preserve STREAM_RESOURCE_CONFIG injection token name


---------
blove added a commit that referenced this pull request Apr 10, 2026
…plane/angular

The stream-resource lib code was already merged into libs/agent during
the rebrand (PR #39). This cleans up remaining stale references:

- Update README.md: streamResource() → agent() throughout
- Update LICENSE-COMMERCIAL: stream-resource.dev → cacheplane.ai
- Update 11 cockpit docs: streamResource() → agent() in code examples and prose
- Add consolidation spec and plan docs

SVG assets (hero.svg, arch-diagram.svg) contain embedded streamResource
text and need manual regeneration — flagged for follow-up.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
blove added a commit that referenced this pull request Apr 10, 2026
* feat(cockpit): complete cockpit application with 14 capability examples (#14)

Cockpit is an integrated developer reference surface for @cacheplane/stream-resource.
It embeds running Angular examples, shows syntax-highlighted source code, renders
tutorial documentation, and displays auto-generated API references for each capability.

Shared libraries:
- @cacheplane/design-tokens: colors, glass, gradient, glow, typography tokens
- @cacheplane/ui-react: GlassPanel, GlassButton, Callout, Steps, Tabs, Card, CodeGroup, NavLink
- @cacheplane/chat: Angular chat component library (cp-chat, cp-chat-message, cp-chat-input)

14 capability examples (Angular + Python + docs + e2e each):
- LangGraph: streaming, persistence, interrupts, memory, durable-execution, subgraphs, time-travel, deployment-runtime
- Deep Agents: planning, filesystem, subagents, memory, skills, sandboxes

Unified harness:
- Capability registry as single source of truth
- Serve orchestrator with --capability and --all modes
- Per-capability Nx serve targets
- CI build job for all Angular apps
- LangGraph deployment matrix for all 14 backends
- Smoke e2e test suite (28 tests: 14 UI render + 14 send/receive)

Light glassmorphism theme matching the website design with frosted glass panels,
warm-to-cool gradient backgrounds, and EB Garamond/Inter/JetBrains Mono typography.

* docs: add cockpit mobile menu redesign spec

Full-screen overlay with product cards and topic chips,
replacing the narrow w-64 drawer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: consolidate @cacheplane/stream-resource references into @cacheplane/angular

The stream-resource lib code was already merged into libs/agent during
the rebrand (PR #39). This cleans up remaining stale references:

- Update README.md: streamResource() → agent() throughout
- Update LICENSE-COMMERCIAL: stream-resource.dev → cacheplane.ai
- Update 11 cockpit docs: streamResource() → agent() in code examples and prose
- Add consolidation spec and plan docs

SVG assets (hero.svg, arch-diagram.svg) contain embedded streamResource
text and need manual regeneration — flagged for follow-up.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant